VACUUM, Autovacuum и bloat

Зачем это знать:

  • Это один из главных факторов деградации PostgreSQL со временем.

  • Влияет на индекс-only scans, на размер таблиц/индексов и на I/O.

Связанные темы:

MVCC и снимки транзакций

Планировщик запросов и EXPLAIN

Мониторинг и диагностика PostgreSQL


Что делает VACUUM

  • Помечает “мёртвые” версии строк как свободные для повторного использования.

  • Обновляет visibility map (важно для index-only scan).

  • Не всегда “уменьшает файл” — чаще освобождает место внутри.


Autovacuum

  • Фоновая система, которая запускает VACUUM/ANALYZE автоматически.

  • Если autovacuum “не успевает”, симптомы:

  • рост размеров таблиц/индексов (bloat),
  • падение производительности,
  • ухудшение планов (статистика не обновляется),
  • рост нагрузки на I/O.

Bloat (раздувание)

Типовые причины:

  • много UPDATE/DELETE,

  • длинные транзакции,

  • редкий/слабый autovacuum,

  • неправильный fillfactor для таблиц с частыми UPDATE.


Что важно уметь обсуждать

  • “Почему нужно поддерживающее обслуживание” (VACUUM/ANALYZE/REINDEX).

  • Почему long-running transactions — риск для всей базы.

  • Почему после массовых изменений нужны ANALYZE и иногда VACUUM FULL/REINDEX (по ситуации).

Последнее обновление